﻿using HMS.DataContract.Request;
using HMS.DataContract.Response;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.ServiceModel.Web;
using HMS.DataContact.Response;

namespace HMS.Service
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IScheduler" in both code and config file together.
    [ServiceContract]
    public interface IScheduler
    {
    //    [WebInvoke(Method = "GET",
    //                ResponseFormat = WebMessageFormat.Json,
    //                UriTemplate = "GetLocation")]
        [OperationContract]
        List<LocationResponse> GetLocationList(string clinicCode);

        [OperationContract]
        List<DoctorResponse> GetDoctorList(int LocId);

        [OperationContract]
        List<DoctorAppointmentResponse> GetAppointmentDetails(int patientId, int doctorApptId, int doctorId);
        [OperationContract]
        List<MonthChart> GetMonthlyAppointmentList(int DocId, int LocId,int clinicId, DateTime startDate, DateTime endDate);
        [OperationContract]
        List<DailyList> GetDailyAppointmentList(int DocId, int LocId,int clinicId, DateTime startDate, DateTime endDate);

        [OperationContract]
        DoctorAppointmentResponse SaveAppointmentDetails(DoctorAppointmentResponse doctorAppointmentResponse, string clinicCode);

        [OperationContract]
        ClinicResponse GetClinicName(string clinicCode);

        [OperationContract]
        DoctorAppointmentResponse DeleteAppointment(int AppointmentId);

        [OperationContract]
        List<PatientResponse> GetPatientList(string PatientName,int ClinicId);

        [OperationContract]
        DoctorAppointmentResponse GetPatientById(int PatientId,DateTime date);
        [OperationContract]
        AppointmentDocumentResponse SaveImage(AppointmentDocumentRequest appDoc);

        [OperationContract]
        UserInfo ValidateUser(string accessCode);

        [OperationContract]
        List<AppointmentDocumentResponse> GetImageList(int DocApptId);

        [OperationContract]
        List<DoctorAppointmentResponse> GetAppointmentHistoryByPatientId(int patientId, int numberOfRecord);
        [OperationContract]
        int SavePatientDetails(PatientResponse patient);
        [OperationContract]
        AppointmentDocumentResponse SavePatientImage(AppointmentDocumentRequest appDoc);

        [OperationContract]
        List<TimeSpan> GetDoctorSlots(int DocId);
        [OperationContract]
        List<DateTime> GetDoctorDayOffList(int DocId, DateTime startDate, DateTime endDate);

        [OperationContract]
        DoctorAppointmentResponse GetAppointmentbyId(int DocAppId);

        [OperationContract]
        List<DoctorAppointmentResponse> GetAppointmentbyPatientId(int PatientId);

        [OperationContract]
        bool SavePrescriptionText(AppointmentDocumentRequest appDoc);

        [OperationContract]
        bool SaveDoctorDayOff(int DocId,DateTime date);

        [OperationContract]
        bool DeleteDoctorDayOff(int DocId, DateTime date);
        [OperationContract]
        List<PatientLocationReportResponse> LocationBasedPatientCount(DateTime startDate, DateTime endDate, int clinicId, int locId, int docId);

        [OperationContract]
        List<FinanceReportResponse> GetFinanceReport(DateTime startDate, DateTime endDate, int clinicId, int locId, int docId);
    }

  
}
